	int fun1(int* a, int& b, int c) {
		b = b + 1;
		int res = *a + b + c;
		*a = 20;
		b = b + 2;
		return res;
	}
	int& fun2(int* a, int& b) {		// 返回*a
		*a = *a + b + 1;
		return *a;
	}
	int& fun3(int* a, int& b) {		// 返回b
		b = b + *a + 2;
		return b;
	}
	int* fun4(int* a, int& b, int c) {
		*a = *a + 3;
		b = b + 4;
		c + c + 5;
		return a;
	}
	double fun5(int a, int b) {
		double c = (a + b) / (3.14 + a * b);	// 自动类型转换
		return c;
	}
	void set(int* a, int& b) {		// a,b在此处初始化
		*a = 10;
		b = 20;
	}
	int sum(int a, int b) {
		return a + b;
	}

	double mainFunc(int a, int b, int c)
	{
		int d = 4, e = 5, f, g, h, * p;	// 并列语句，f，g，h，p未初始化
		f = sum(d, e), set(&g, h);	// 并列语句，f，g，h初始化
		int r1 = a + a * (b + c) / (a + c * (b + a)) + c;  // 括号嵌套
		int r2 = sum(f, sum(g, sum(h, 1)));  // 函数嵌套
		int tmp1 = fun1(&a, b, c);	// 传递指针引用
		int r3 = a + b + c + tmp1;  	
		int& tmp2 = fun2(&a, b);		// 返回引用
		int& tmp3 = fun3(&c, d);
		int r4 = a + b + tmp2 + c + d + tmp3;  
		int* q = fun4(&a, b, c);	// 返回指针
		int r5 = *q + 1;  //30
		p = &d, * q = *q + a + b + c * *p;  // 并列语句，p初始化，重新设置指针q
		double r6 = fun5(g, h); // 0.14768140double测试，函数内部int转double
		int r7 = d + *p * *q / (a + b);	//17，测试自动double转int
		double res = r1 + r2 + r3 + r4 + r5 +r6+ r7 + 0.1; 
		return  res;
	}